// 2924. 找到冠军 II
// https://leetcode.cn/problems/find-champion-ii/?envType=daily-question&envId=2024-04-13

/**
 * 示例 1：
输入：n = 3, edges = [[0,1],[1,2]]
输出：0
解释：1 队比 0 队弱。2 队比 1 队弱。所以冠军是 0 队。

示例 2：
输入：n = 4, edges = [[0,2],[1,3],[1,2]]
输出：-1
解释：2 队比 0 队和 1 队弱。3 队比 1 队弱。但是 1 队和 0 队之间不存在强弱对比。所以答案是 -1 。
 */

/**
 * @param {number} n
 * @param {number[][]} edges
 * @return {number}
 */
var findChampion = function (n, edges) {
    if (edges.length + 1 < n) {
        return -1;
    }

    let records = new Array(n).fill(true).map((_, idx) => {
        return {
            idx,
            win: true,
        };
    });

    edges.forEach((ele) => {
        const failTeam = ele[1];
        records[failTeam].win = false;
    });

    let wins = records.filter((n) => n.win === true);

    // console.log(JSON.stringify(wins));

    if (wins.length === 1) {
        return wins[0].idx;
    }

    return -1;
};

var test = function (n, edges) {
    const result = findChampion(n, edges);

    let strInput = '';

    if (edges.length > 6) {
        let [a, b, c, ...others] = edges;
        let [f, e, d] = others.reverse();

        strInput = `[${JSON.stringify(a)},${JSON.stringify(b)},${JSON.stringify(
            c
        )},...,${JSON.stringify(d)},${JSON.stringify(e)},${JSON.stringify(f)}]`;
    } else {
        strInput = JSON.stringify(edges);
    }

    console.log(`${strInput} is ${result}`);
};

test(3, [
    [0, 1],
    [1, 2],
]);

test(4, [
    [0, 2],
    [1, 3],
    [1, 2],
]);
